home *** CD-ROM | disk | FTP | other *** search
/ 8bitfiles.net/archives / archives.tar / archives / genie-commodore-file-library / C64-128Toolkit / MSD-DU10.ARC / MSD - $򵖿 < prev    next >
Encoding:
Text File  |  2019-04-13  |  4.9 KB  |  69 lines

  1. ║CM:MSD - $┼7╞1
  2. ║LM21:RM70:PP66:PG60
  3. ║P#100
  4. ║FT1:,,╨AGE <>
  5. ║AI-16
  6.        ╨┼┌╥1    ╞LASH ERROR ╠┼─ TWICE
  7.  
  8. $┼7╞1           ╙ET .╪ TO $01 TO FLASH ╠┼─S 2 TIMES.
  9. $┼7╞4  ╨┼┌╥2    ╙ET .╪ TO $02 TO FLASH ╠┼─S 3 TIMES.
  10. $┼7╞7  ╨┼┌╥0    ╙ET .╪ TO $00 TO FLASH ╠┼─S ONCE.
  11. $┼7╞9  ╨┼┌╥╪    ╙AVE THE VALUE IN .╪ AS THE STACK POINTER.  ╘HIS HAS NO SPECIAL SIGNIFICANCE, IT IS JUST A CONVENIENT STORAGE LOCATION.
  12. $┼7╞├  ╨┼20     ╥ESTORE .╪ FROM THE STACK POINTER.  ╘HIS IS THE START OF THE MAIN FLASH LOOP.
  13. $┼7╞─  ╨┼30     ╙ET ╠┴╘├╚╙ [$┴8] TO %XXXXX110 TO TURN ON THE ╠┼─╙.
  14. $┼803           ╘RANSFER ╠┴╘├╚╙ [$┴8] TO ╚─╫╔╠ [$┴000].
  15. $┼808           ╙ET UP AND EXECUTE A LOOP TO CONSUME ABOUT 0.25 SECONDS.
  16. $┼812           ╙ET ╠┴╘├╚╙ [$┴8] TO %XXXXX001 AND COPY THIS VALUE TO ╚─╫╔╠ [$┴000] TO TURN OFF BOTH ╠┼─S.
  17. $┼81─  ╨┼40     ╙ET UP AND EXECUTE A LOOP TO CONSUME ABOUT 0.25 SECONDS.
  18. $┼827           ─ECREMENT .╪ (THE FLASH COUNTER) AND IF .╪ IS NON-NEGATIVE THEN LOOP BACK TO ╨┼30 TO FLASH THE ╠┼─S AGAIN.
  19. $┼82┴           ╫HEN .╪ IS NEGATIVE, LOOP BACK TO ╨┼40 ANOTHER 3 TIMES TO WAIT APPROXIMATELY 0.75 SECONDS BETWEEN GROUPS OF FLASHES.
  20. $┼82┼           ╟O INTO AN INFINITE LOOP BACK TO ╨┼20 TO KEEP FLASHING THE ╠┼─S UNTIL THE POWERE IS TURNED OFF.
  21.  
  22.  
  23.  
  24.        ╫├╚╥┴═   ─ETERMINE SEGMENT OF ╥┴═ IN WHICH ERROR OCCURRED
  25.  
  26. $┼830           ╠OAD .┴ FROM ╙┴╓╨╬╘+1 [$41] TO SEE WHERE THE MEMORY CHECK FAILED.  ╔F .┴ IS IN THE RANGE $40-$47 INCLUSIVE THEN BRANCH TO ╨┼┌╥1 [$┼7╞1] TO FLASH THE ╠┼─S TWO TIMES.
  27. $┼836           ╔F .┴ IS IN THE RANGE $48-$4╞ INCLUSIVE THEN BRANCH TO ╨┼┌╥2 [$┼7╞4] TO FLASH THE ╠┼─S THREE TIMES.
  28. $┼83┴           ╧THERWISE, DON'T WORRY.  ┴SSUME THAT THE EXTRA ╥┴═ AT $5000-$57╞╞ DOES NOT EXIST BY SETTING .┴ TO ZERO (TO INDICATE THIS IS A SINGLE DRIVE) AND CONTINUE WITH THE DISK INITIALIZATION AT      ─╔┴╟╧╦ [$┼883].
  29.  
  30.  
  31.  
  32.        ─╙╦╔╬╘   ─ISK DRIVE INITIALIZATION ROUTINE
  33.  
  34. $┼83╞           ─ISABLE INTERRUPTS AND CLEAR THE DECIMAL MODE.
  35. $┼841           ╙ET UP TO CHECK THE ╥┴═ WITHIN THE 6511╤ STARTING AT LOCATION $40.
  36. $┼843  ╨╓10     ╙TORE BIT PATTERNS OF %01010101 AND %10101010 INTO THE ╥┴═, LOAD THEM BACK, AND THEN CHECK THEM TO ENSURE THE ╥┴═ IS WORKING CORRECTLY.  ╔F NOT THEN BRANCH TO ╨┼┌╥0 [$┼7╞7] TO FLASH THE ╠┼─S ONCE.
  37. $┼857           ╔NCREMENT .╪ TO NEXT LOCATION AND LOOP BACK TO ╨╓10 IF THERE IS MORE MEMORY ON THE CHIP TO CHECK.
  38. ║FP
  39. $┼85┴           ─ECREMENT .╪ TO $╞╞ AND SET THE STACK POINTER TO THIS VALUE.
  40. $┼85├           ╙ET ╙┴╓╨╬╘+1[$41] TO $40 SO IT POINTS TO $4000.
  41. $┼860           ╙ET .┘ TO ZERO TO CHECK THIS PAGE OF ╥┴═.
  42. $┼862  ╥┴10     ╙TORE BIT PATTERNS OF %01010101 AND %10101010 INTO (╙┴╓╨╬╘),┘ [($40),┘], LOAD THEM BACK, AND THEN CHECK THEM TO ENSURE THE ╥┴═ IS WORKING CORRECTLY.  ╔F NOT THEN BRANCH TO ╫├╚╥┴═ [$┼830] TO DETERMINE WHERE THE PROBLEM IS.
  43. $┼872           ╙ET THE ╥┴═ LOCATION (╙┴╓╨╬╘),┘ [($40),┘] TO ZERO.
  44. $┼876           ╔NCREMENT .┘ AND LOOP BACK TO ╥┴10 TO CONTINUE CHECKING THIS PAGE IF .┘ IS NOT ZERO.
  45. $┼879           ╔NCREMENT ╙┴╓╨╬╘+1 [$41] TO POINT TO THE NEXT PAGE OF ╥┴═ TO BE CHECKED.
  46. $┼87─           ╔F ╙┴╓╨╬╘+1 [$41] < $58 THEN LOOP BACK TO ╥┴10 TO CHECK THIS PAGE OF ╥┴═.
  47. $┼881           ╙ET .┴ TO $01 TO INDICATE THE ╥┴═ AT $5000-$57╞╞ EXISTS.
  48.  
  49. $┼883  ─╔┴╟╧╦   ╙AVE .┴ IN ─╒┴╠╞╠ [$┬7] TO INDICATE THE TYPE OF DRIVE.
  50. $┼885           ╩╙╥ ╙╘┴╘╔╬ [$╞┼25] TO SET PORT ┬ IN ╙╘┴╘╒╙ MODE.
  51. $┼888           ─ETERMINE THE DEVICE NUMBER FROM PORT ┬ [$01], ╧╥ WITH $48 (TALK ADDRESS), AND SAVE IN ╘╠╦┴─╥ [$78].
  52. $┼892           ┼╧╥ THE TALK ADDRESS WITH $60 TO GET THE LISTEN ADDRESS AND SAVE IN ╠╙╬┴─╥ [$77].
  53. $┼896           ╔NITIALIZE ┬╒╞╘┴┬ [$7┴-$91] POINTERS TO $00/$40 ($4000), $00/$41 ($4100), ETC.
  54. $┼8┴7           ╙ET THE POINTER TO THE COMMAND BUFFER AT ┬╒╞╘┴┬+$18/┬╒╞╘┴┬+$19 [$92/$93] TO $00/$4┼ ($4┼00).
  55. $┼8┴╞           ╙ET THE POINTER TO THE ERROR BUFFER AT ┬╒╞╘┴┬+$1┴/┬╒╞╘┴┬+$1┬ [$94/$95] TO $64/$4┼ ($4┼64).
  56. $┼8┬7           ╙ET ╠╔╬╘┴┬ [$4├8┴-$4├9├] TO $╞╞ TO INDICATE ALL CHANNELS ARE INACTIVE.
  57. $┼8├1           ╙ET TABLES ┬╒╞0 [$96-$9─], ┬╒╞1 [$9╞-$┴6], AND ╙╙ [$4├5┴-$4├60] TO $╞╞ TO INDICATE THESE BUFFERS ARE UNUSED.
  58. $┼8├─           ╙ET ┬╒╞0+6 [$9├] TO $0├ (THE COMMAND CHANNEL).
  59. $┼8─1           ╙ET ┬╒╞0+7 [$9─] TO $0─ (THE ERROR CHANNEL).
  60. $┼8─5           ╙ET ╠╔╬╘┴┬+$10 [$4├9┴] TO $07 TO INDICATE THE ERROR CHANNEL IS OPEN FOR READING USING CHANNEL 7.
  61. $┼8─┴           ╙ET ╠╔╬╘┴┬+$0╞ [$4├99] TO $86 TO INDICATE THE COMMAND CHANNEL IS OPEN FOR WRITING USING CHANNEL 6.
  62. $┼8─╞           ╩╙╥ ╙┼╘╠╔╬ [$├9┼├] TO SET THE ╠╔╬╒╙┼ VECTOR.
  63. $┼8┼2           ╙ET ├╚╬╥─┘+$08 [$4├84] TO $01 TO INDICATE THE COMMAND CHANNEL IS READY TO LISTEN.
  64. $┼8┼7           ╙ET ├╚╬╥─┘+$09 [$4├85] TO $88 TO INDICATE THE ERROR CHANNEL IS READY TO TALK.
  65. $┼8┼├           ╙ET ┬╒╞╒╙┼ [$4├┬1] TO %00000000 TO INDICATE BUFFERS 0-7 ARE AVAILABLE.
  66. $┼8╞1           ╙ET ┬╒╞╒╙┼+1 [$4├┬2] TO %11111100 TO INDICATE BUFFERS 8-9 ARE AVAILABLE AND ALL OTHERS ARE IN USE.
  67. $┼8╞6           ╙ET ╫╨╙╫/╫╨╙╫+1 [$4├2─/$4├2┼] TO $01 TO SET UP THE WRITE PROTECT STATUS.
  68. $┼8╞┼           ╩╙╥ ╒╙╥╔╬╘ [$├─51] TO INITIALIZE THE USER JUMP TABLE.
  69.